package com.jt.aop;

import com.jt.vo.SysResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLException;

/**
 * 注解的作用：
 * 1.该注解只拦截Controller层抛出的异常信息！
 *  controller-->service-->mapper
 *  2.需要配合指定的异常类型
 *  @RestControllerAdvice是spring内部的jar包注解，不需要额外添加注解
 * @Aspect属于传统AOP用法，这里是封装后的新用法，可以理解为重写了其中的方法
 * 所以不需要单独添加jar包
 * */
@RestControllerAdvice
public class SystemAOP {
    /**当前controller拦截的异常类型
     *@ExceptionHandler（）标记方法，括号中填写异常类型，多个异常类型谁用{}，并用,号隔开
     * 此处拦截运行时异常和sql异常信息
     *  */
    @ExceptionHandler({RuntimeException.class, SQLException.class})
    public SysResult exception(Exception e){
        /**
         * e.printStackTrace();是打印异常信息，此处必须写，否则一旦出现异常，看不到异常信息
         * 出现异常统一返回失败的状态-*/
        e.printStackTrace();
        return SysResult.fail();
    }
}
